// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`innerTypeParameterShadowingOuterOne.ts 1`] = `
// inner type parameters shadow outer ones of the same name
// no errors expected

function f<T extends Date>() {
    function g<T extends Number>() {
        var x: T;
        x.toFixed();
    }
    var x: T;
    x.getDate();
}

function f2<T extends Date, U extends Date>() {
    function g<T extends Number, U extends Number>() {
        var x: U;
        x.toFixed();
    }
    var x: U;
    x.getDate();
}
//function f2<T extends Date, U extends T>() {
//    function g<T extends Number, U extends T>() {
//        var x: U;
//        x.toFixed();
//    }
//    var x: U;
//    x.getDate();
//}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// inner type parameters shadow outer ones of the same name
// no errors expected

function f<T extends Date>() {
  function g<T extends Number>() {
    var x: T;
    x.toFixed();
  }
  var x: T;
  x.getDate();
}

function f2<T extends Date, U extends Date>() {
  function g<T extends Number, U extends Number>() {
    var x: U;
    x.toFixed();
  }
  var x: U;
  x.getDate();
}
//function f2<T extends Date, U extends T>() {
//    function g<T extends Number, U extends T>() {
//        var x: U;
//        x.toFixed();
//    }
//    var x: U;
//    x.getDate();
//}

`;

exports[`innerTypeParameterShadowingOuterOne2.ts 1`] = `
// inner type parameters shadow outer ones of the same name
// no errors expected

class C<T extends Date> {
    g<T extends Number>() {
        var x: T;
        x.toFixed();
    }

    h() {
        var x: T;
        x.getDate();
    }
}

class C2<T extends Date, U extends Date> {
    g<T extends Number, U extends Number>() {
        var x: U;
        x.toFixed();
    }

    h() {
        var x: U;
        x.getDate();
    }
}
//class C2<T extends Date, U extends T> {
//    g<T extends Number, U extends T>() {
//        var x: U;
//        x.toFixed();
//    }

//    h() {
//        var x: U;
//        x.getDate();
//    }
//}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// inner type parameters shadow outer ones of the same name
// no errors expected

class C<T extends Date> {
  g<T extends Number>() {
    var x: T;
    x.toFixed();
  }

  h() {
    var x: T;
    x.getDate();
  }
}

class C2<T extends Date, U extends Date> {
  g<T extends Number, U extends Number>() {
    var x: U;
    x.toFixed();
  }

  h() {
    var x: U;
    x.getDate();
  }
}
//class C2<T extends Date, U extends T> {
//    g<T extends Number, U extends T>() {
//        var x: U;
//        x.toFixed();
//    }

//    h() {
//        var x: U;
//        x.getDate();
//    }
//}

`;

exports[`staticMembersUsingClassTypeParameter.ts 1`] = `
// BUG 745747
class C<T> {
    static x: T;
    static f(x: T) {}
}

class C2<T, U> {
    static x: U;
    static f(x: U) { }
}

class C3<T extends Date> {
    static x: T;
    static f(x: T) { }
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// BUG 745747
class C<T> {
  static x: T;
  static f(x: T) {}
}

class C2<T, U> {
  static x: U;
  static f(x: U) {}
}

class C3<T extends Date> {
  static x: T;
  static f(x: T) {}
}

`;

exports[`typeParametersAvailableInNestedScope2.ts 1`] = `
function foo<T, U>(x: T, y: U) {
    function bar<V>(z: V) {
        function baz<W>(a: W) {
            var c: T;
            var d: U;
            var e: V;
        }
    }
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function foo<T, U>(x: T, y: U) {
  function bar<V>(z: V) {
    function baz<W>(a: W) {
      var c: T;
      var d: U;
      var e: V;
    }
  }
}

`;
